package com.doit.day06

object _02_科里化 {
  def main(args: Array[String]): Unit = {
    def add(a: Int, b: Int) = {
      a + b
    }

    //科里化，将一个参数列表中的多个参数，分别放在两个括号里面进行传值
    def add1(a: Int)(b: Int) = {
      a * b
    }

    val ints: List[Int] = List(1)

//    ints.sortBy()

    //1.更方便隐式参数
    def add2(a: Int)(implicit b: Int) = {
      a + b
    }

    //2.科里化 的写法，会将每一个括号截止的时候，都可以返回一个函数
    add(1, 2)
    val intToInt: Int => Int = add1(1)
    val i: Int = intToInt(2)
    println(i)

    //    3.可以减少参数的传递
    val intToInt1: Int => Int = add1(100)
/*    intToInt1(0.8)
    intToInt1(0.9)
    intToInt1(0.6)*/

    //4.更好的做类型的推断,用A的对象调用B
/*
    def abc(a:A,b:a.B)
    def abc(a:A)(b:a.B)={
}
*/


  }
}


/*class A{
  class B
}*/

